const { defineConfig } = require('@vue/cli-service')
const path = require('path');

module.exports = defineConfig({
  transpileDependencies: true,
  devServer: {
    port: 8090,
    host: '0.0.0.0',
    https: false,
    open: true,
    historyApiFallback: true,
    hot: true,
    compress: true,
    client: {
      overlay: false,  // 解决全屏报错问题
    },
    proxy: {
      '/api': {
        // 要代理的地址
        target: 'http://localhost:8088',
        // 配置了这个可以从 http 代理到 https
        // 依赖 origin 的功能可能需要这个，比如 cookie
        changeOrigin: true,
        // pathRewrite: {'^/api': ''}
      },
    },
  },
  configureWebpack: {
    resolve: {
      alias: {
        '@': path.resolve(__dirname, 'src')
      },
      extensions: ['.js', '.jsx', '.ts', '.tsx', '.json']
    },
    plugins: [],
    optimization: {
      splitChunks: {
        chunks: 'all',
        name: false,
      },
    },
    performance: {
      hints: process.env.NODE_ENV === 'production' ? 'warning' : false,
    },
  },
  chainWebpack: config => {
    // 设置环境变量
    config.plugin('define').tap(args => {
      args[0]['process.env.API_URL'] = JSON.stringify(process.env.API_URL);
      return args;
    });

    // 配置 TypeScript 支持
    config.module
      .rule('ts')
      .test(/\.(ts|tsx)$/)
      .exclude
        .add(/node_modules/)
        .end()
      .use('babel-loader')
        .loader('babel-loader')
        .end();

    // 开发环境配置
    if (process.env.NODE_ENV === 'development') {
      config.devtool('eval-source-map');
    } else {
      // 生产环境配置
      config.devtool(false);
      
      // 生产环境优化
      config.optimization.minimize(true);
    }
  }
})
